En C++, les flux de données ne sont pas seulement des conduits ; ce sont entités étatiques. L'évaluation d'un objet istream comme std::cin comme une condition booléenne permet à nos programmes de s'adapter au rythme imprévisible de l'entrée utilisateur ou des fichiers externes.
1. Le flux comme valeur de vérité
Lorsque nous utilisons if (std::cin >> val), l'expression retourne vrai seulement si le flux reste valide. Si celui-ci atteint un fin de fichier (EOF) ou rencontre des types de données non valides, il passe à un état « échec », retournant faux.
2. L'ancre et le capteur
Pour suivre les changements de données, nous définissons currVal (notre ancre d'état) et val (notre capteur actif). La logique repose sur la comparaison du capteur entrant avec l'ancre. Une incompatibilité déclenche un rapport de « changement d'état », ce qui permet efficacement de traiter des données infinies avec une mémoire minimale.
3. Opérations de lecture multiples
Le C++ permet le chaînage des lectures de flux : cin >> i >> j;. Cela lit la première valeur dans i et la deuxième dans j, offrant une méthode concise pour ingérer des enregistrements complexes.